@秒灵儿
1年前 提问
1个回答

什么是 RASP

安全小白成长记
1年前
官方采纳

简单来说它是一种新型应用安全保护技术,它将保护程序像疫苗一样注入到应用程序中,应用程序融为一体,能实时检测和阻断安全攻击,使应用程序具备自我保护能力,当应用程序遭受到实际攻击伤害,就可以自动对其进行防御,而不需要进行人工干预。RASP技术可以快速的将安全防御功能整合到正在运行的应用程序中,它拦截从应用程序到系统的所有调用,确保它们是安全的,并直接在应用程序内验证数据请求。

RASP vs WAF

很多时候大家在攻击中遇到的都是基于流量规则的waf防御,waf往往误报率高,绕过率高,市面上也有很多针对不同waf的绕过方式,而RASP技术防御是根据请求上下文进行拦截的,和WAF对比非常明显,比如说:

攻击者对url http://http.com/index.do?id=1进行测试,一般情况下,扫描器或者人工测试sql注入都会进行一些sql语句的拼接,来验证是否有注入,会对该url进行大量的发包,发的包可能如下

http://xxx.com/index.do?id=1' and 1=2--

但是应用程序本身已经在程序内做了完整的注入参数过滤以及编码或者其他去危险操作,实际上访问该链接以后在数据库中执行的sql语句为

select id,name,age from home where id='1 \' and 1=2--'

可以看到这个sql语句中已经将单引号进行了转义,导致无法进行,但是WAF大部分是基于规则去拦截的(也有小部分WAF是带参数净化功能的),也就是说,如果你的请求参数在他的规则中存在,那么waf都会对其进行拦截(上面只是一个例子,当然waf规则肯定不会这么简单,大家不要钻牛角尖。),这样会导致误报率大幅提升,但是RASP技术可以做到程序底层拼接的sql语句到数据库之前进行拦截。也就是说,在应用程序将sql语句预编译的时候,RASP可以在其发送之前将其拦截下来进行检测,如果sql语句没有危险操作,则正常放行,不会影响程序本身的功能。如果存在恶意攻击,则直接将恶意攻击的请求进行拦截或净化参数。

RASP 的优点

  • RASP 能够看到系统里所有用户行为的细节,这样对于提高安全攻击识别的准确性有非常大的帮助。 比如RASP能非常清楚的理解用户的逻辑,配置以及数据和事件流,这就给非常精确的探测和拦截安全攻击行为提供了坚石的基础。

  • 另外 RASP 能够自我保护数据,能够保护数据从创建到消亡的全过程。

  • RASP 和应用程序运行在一起,拥有用户的数据,RASP 在安全保护上想象的空间非常的大,RASP 可以满足很多企业级的数据保护需求, 比如数据透明加解密,一些只在系统内使用保密数据就可以使用加密,即使黑客将数据偷窃出去,也无法破解和解密,这样更不存在其他的问题了。

RASP 的缺陷

  • 不同的编程语言可能编译语言和应用程序的版本不一致都导致RASP产品无法通用,甚至导致网站挂掉

  • 如果RASP技术中对底层拦截点不熟悉,可能导致漏掉重要hook点,导致绕过

  • 对于csrf、ssrf、sql语句解析等问题目前还是基于部分正则进行防护(对于sql语句的解析问题可以使用AST语法树进行解析)